Apresentação dos dados

Nesse laboratório utilizamos dados referentes aos alunos que já concluíram o curso de Ciência da Computação - UFCG. Nele se encontram, de cada aluno, todas as médias finais obtidas em cada disciplina (5-10), assim como o coeficiente de rendimento acadêmico (cra, ~4-10).

Queremos realizar análises de regressão utilizando as disciplinas dos dois primeiros períodos e cra na tentativa de responder a seguinte pergunta:

O desempenho dos alunos nos dois primeiros períodos consegue explicar, em algum grau, seus desempenhos no curso como um todo?

Para isso, construiremos um modelo de regressão com disciplinas do primeiro e segundo período. Ao longo desse documento iremos responder perguntas a respeito do modelo e realizar comparações. Logo abaixo um breve resumo de como se distribuem as variáveis quando relacionadas e seus respectivos coeficientes de correlação.

Legenda

graduados = read.csv("graduados_disciplinas.csv")

graduados = graduados[, c("Cálculo.Diferencial.e.Integral.I",  "Álgebra.Vetorial.e.Geometria.Analítica", "Leitura.e.Produção.de.Textos", "Programação.I", "Laboratório.de.Programação.I", "Introdução.à.Computação", "Cálculo.Diferencial.e.Integral.II", "Matemática.Discreta", "Programação.II", "Laboratório.de.Programação.II", "Teoria.dos.Grafos", "Fundamentos.de.Física.Clássica", "cra")]

colnames(graduados) = c("Cálculo.1", "Vetorial", "LPT", "P1", "LP1", "IC", "Cálculo.2", "Discreta", "P2", "LP2", "Grafos", "Física.3", "cra")

ggpairs(graduados, lower = list(continuous = "smooth"), upper = list(continuous = wrap("cor", size = 10)))

# ggcorr(graduados1[, 2:8], geom = "circle", nbreaks = 5)
# ggcorr(graduados1[, 2:8], nbreaks = 5,  label = TRUE, label_size = 3, label_round = 2, label_alpha = TRUE)

Um modelo de regressão múltipla com todas as variáveis é plausível para explicar a variação em y? Em que grau?

Para responder esta pergunta criamos um modelo de regressão linear múltipla que englobe todas disciplinas como variáveis independentes e o cra como variável dependente. Após a criação do modelo, obtemos um resumo do mesmo com suas principais características relacionadas a efetividade.

rl = lm(cra ~ ., data = graduados)

summary(rl)
## 
## Call:
## lm(formula = cra ~ ., data = graduados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8273 -0.2988  0.1069  0.2796  1.0032 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.33894    0.59783   2.240  0.02758 *  
## Cálculo.1    0.02121    0.04907   0.432  0.66661    
## Vetorial     0.04443    0.04762   0.933  0.35327    
## LPT          0.09172    0.05167   1.775  0.07925 .  
## P1          -0.02593    0.07684  -0.337  0.73660    
## LP1         -0.02472    0.07450  -0.332  0.74082    
## IC           0.10196    0.08639   1.180  0.24098    
## Cálculo.2   -0.00100    0.05302  -0.019  0.98499    
## Discreta     0.23935    0.05863   4.083 9.63e-05 ***
## P2           0.29214    0.09553   3.058  0.00293 ** 
## LP2         -0.02848    0.06666  -0.427  0.67024    
## Grafos       0.09620    0.06302   1.526  0.13040    
## Física.3    -0.01024    0.06120  -0.167  0.86745    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5046 on 90 degrees of freedom
##   (309 observations deleted due to missingness)
## Multiple R-squared:  0.6889, Adjusted R-squared:  0.6474 
## F-statistic: 16.61 on 12 and 90 DF,  p-value: < 2.2e-16

Utilizamos o Residual standart error (RSE) para interpretar parte do nosso modelo. RSE é o desvio padrão dos resíduos que descreve a variabilidade referente ao modelo de regressão utilizado. Queremos que o valor RSE seja o menor possível. O RSE do modelo tem valor igual a 0.5046.

Uma segunda variável que utilizamos é o R-quadrado que apresenta valor referente ao coeficiente de determinação, ela varia entre 0-1 e indica quanto o modelo consegue explicar o valor observado, no nosso caso, o cra. Quanto maior o R-quadrado, melhor, significando que o modelo é mais explicativo. Existe um tendência de que quanto mais variáveis o modelo possuir, maior o seu poder explicativo, incentivando a inserção de muitas variáveis e para combater isso existe o R-quadrado ajustado. R-quadrado ajustado funciona da mesma maneira que o R-quadrado, com a diferença de que ele sofre penalização se há inclusão de variáveis com muito pouco poder explicativo. Para todos os modelos deste documento estaremos utilizando valores relacionados ao R-quadrado ajustado para medir o poder de explicação dos mesmos.

Interpretandos os dados acima temos que o R-quadrado ajustado tem valor igual a 0.6474, isso signigica que 64.74% do cra consegue ser explicado pelas variáveis independentes presentes no modelo. Então, sim, o modelo explica parte da variável dependente em mais de 50%.

Todas as variáveis são úteis para o modelo de regressão?

Apesar de o modelo explicar a variável dependente em quase 67%, nem todas as variáveis independentes que fazem parte dele apresentam influência considerável. Neste documento, utilizaremos dois principais valores para avaliar a utilidade e significância de uma variável independente presente em um modelo: seu coeficiente (relacionado a magnitude) e p-valor.

O coeficiente de uma variável é referênte ao poder de influência que ela tem na variável dependente. O p-valor é referente a probabilidade de exisência por chance, queremos que este valor seja o menor possível para que a variável seja considerada importante para o modelo.

Disciplinas como Física 3, Cálculo 2, Cálculo 1 etc, apresentam baixo coeficiente e p-valor elevado. Essas variáveis influenciam minimamente e não são consideradas úteis para o modelo. Portanto, nem todas as variáveis são úteis para o modelo de regressão apresentado.

Se a resposta para a pergunta anterior foi não, construa um novo modelo sem essas variáveis e o compare ao modelo com todas as variáveis (e.g. em termos de R2 e RSE).

# 
# ggplot(graduados1, aes(graduados1$IC, graduados1$cra)) +  
#   geom_point(alpha = 0.1, position = position_jitter(width = 0.3), color="purple4") + 
#   labs(title="Previsão do modelo", x= "Nota em IC", y="CRA") +  
#   geom_line(aes(y = predict(rl1, graduados1)), colour = "red")

Analise os plots de resíduos de cada variável e veja se algum (um ou mais) deles indica não aleatoriedade dos erros.

Que período consegue explicar melhor o desempenho final (primeiro ou segundo)?

graduados1 = graduados[,c("Cálculo.1", "Vetorial", "LPT", "P1", "LP1", "IC", "cra")]
graduados2 = graduados[, c("Cálculo.2", "Discreta", "P2", "LP2", "Grafos", "Física.3", "cra")]


graduados1 = na.omit(graduados1)
graduados2 = na.omit(graduados2)

rl1 = lm(cra ~ ., data = graduados1)
rl2 = lm(cra ~ ., data = graduados2)

summary(rl1)
## 
## Call:
## lm(formula = cra ~ ., data = graduados1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.53290 -0.31108  0.07564  0.37949  1.31148 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.89445    0.38666   2.313 0.021423 *  
## Cálculo.1    0.11604    0.02803   4.141 4.57e-05 ***
## Vetorial     0.12305    0.03221   3.821 0.000164 ***
## LPT          0.11915    0.03672   3.245 0.001315 ** 
## P1           0.06425    0.04076   1.576 0.116054    
## LP1          0.08620    0.04219   2.043 0.041974 *  
## IC           0.32061    0.04853   6.606 1.94e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5668 on 284 degrees of freedom
## Multiple R-squared:  0.5488, Adjusted R-squared:  0.5392 
## F-statistic: 57.56 on 6 and 284 DF,  p-value: < 2.2e-16
summary(rl2)
## 
## Call:
## lm(formula = cra ~ ., data = graduados2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.59303 -0.35328  0.08232  0.34269  1.01093 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.101453   0.488158   4.305 3.76e-05 ***
## Cálculo.2   0.018291   0.048695   0.376  0.70795    
## Discreta    0.266726   0.054252   4.916 3.27e-06 ***
## P2          0.257116   0.086630   2.968  0.00371 ** 
## LP2         0.004893   0.056411   0.087  0.93105    
## Grafos      0.129179   0.052604   2.456  0.01570 *  
## Física.3    0.039475   0.053422   0.739  0.46160    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5048 on 105 degrees of freedom
## Multiple R-squared:  0.6628, Adjusted R-squared:  0.6435 
## F-statistic:  34.4 on 6 and 105 DF,  p-value: < 2.2e-16

Use o modelo para predizer o seu próprio desempenho e compare a predição com o seu CRA atual. Comente o resultado.